در لینوکس، هر برنامه، فرمان، ابزار یا سرویسی که اجرا شود، یک پردازش (Process) محسوب میشود. هسته لینوکس (Kernel) برای مدیریت این پردازشها، به هر کدام یک عدد منحصربهفرد به نام PID (Process ID) اختصاص میدهد.
اولین پردازشی که پس از بوت شدن سیستمعامل اجرا میشود، به طور سنتی init است که با PID شماره ۱ شناخته میشود. در سیستمهای جدیدتر، این نقش توسط systemd (با PID ۱) یا سایر init سیستمها انجام میشود.
دو ابزار اصلی برای مشاهده پردازشها در لینوکس وجود دارند:
ps (Process Snapshot)top (Real-time Process Viewer)ps و گزینههای آن
دستور ps یکی از پرکاربردترین ابزارهای مدیریت فرآیند است. با استفاده از گزینههای مختلف، میتوانید اطلاعات متنوعی از پردازشها دریافت کنید.
ps| گزینه | توضیح |
|---|---|
ps |
نمایش پردازشهای جاری در همان ترمینال (ساده) |
ps -e |
نمایش همه پردازشها (Every process) |
ps -f |
نمایش با قالب کامل (Full format) شامل کاربر، زمان شروع، و ... |
ps -u [user] |
نمایش پردازشهای یک کاربر خاص |
ps -p [PID] |
نمایش اطلاعات یک پردازش با شماره PID مشخص |
ps aux |
نمایش همه پردازشها با جزئیات کامل (BSd style) |
ps -ef |
نمایش همه پردازشها با فرمت کامل (System V style) |
ps -aux |
مشابه ps aux (گاهی کاربری با نام 'x' را هم نمایش میدهد) |
ps -eo pid,ppid,cmd,%cpu,%mem |
نمایش فیلدهای دلخواه (custom output) |
ps -aux (مهم و پرکاربرد)
دستور ps -aux یکی از رایجترین دستورات برای مشاهده همه پردازشها همراه با جزئیات کامل است. در ادامه، تکتک سوییچهای این دستور را بررسی میکنیم.
ps -auxاین دستور از ترکیب سه گزینه اصلی تشکیل شده است:
a (All users): نمایش پردازشهای همه کاربران، نه فقط کاربر فعلی. این گزینه پردازشهای متصل به ترمینال را نیز شامل میشود.
u (User-oriented): نمایش اطلاعات به صورت کاربرمحور با ستونهای خوانا مانند نام کاربر، درصد CPU، درصد RAM و ... این گزینه خروجی را برای انسان قابلخوانتر میکند.
x (No controlling TTY): نمایش پردازشهایی که کنترل ترمینال (TTY) ندارند، مانند پردازشهای سیستمی (daemon) که در پسزمینه اجرا میشوند. بدون این گزینه، بسیاری از پردازشهای حیاتی سیستم نمایش داده نمیشوند.
تفاوت ps aux و ps -aux: در بیشتر سیستمها، این دو دستور خروجی یکسانی دارند. با این حال، در برخی توزیعها، ps -aux ممکن است کاربری با نام 'x' را نیز جستجو کند (که معمولاً وجود ندارد) و سپس نتیجه مشابه ps aux را نمایش دهد. برای جلوگیری از هر گونه سردرگمی، استفاده از ps aux توصیه میشود، اما در عمل هر دو کاربرد یکسانی دارند.
ps aux| ستون | توضیح |
|---|---|
USER |
مالک پردازش (نام کاربری که پردازش را اجرا کرده) |
PID |
شناسه منحصربهفرد پردازش (Process ID) |
%CPU |
درصد استفاده از CPU توسط این پردازش |
%MEM |
درصد استفاده از RAM توسط این پردازش |
VSZ |
حافظه مجازی (Virtual Memory Size) به کیلوبایت |
RSS |
حافظه واقعی (Resident Set Size) به کیلوبایت |
TTY |
ترمینال متصل (اگر پردازش به ترمینال متصل باشد) |
STAT |
وضعیت پردازش (مانند R=Running, S=Sleeping, Z=Zombie) |
START |
زمان شروع پردازش |
TIME |
زمان کل CPU استفادهشده توسط پردازش |
COMMAND |
نام دستور یا برنامهای که پردازش را اجرا کرده |
ps -auxgrep) میتوان پردازشهای خاص را پیدا کرد.top).
نمایش همه پردازشهای متعلق به کاربر tecmint.
grep
پیدا کردن پردازشهای مربوط به firefox با استفاده از grep.
نمایش ۱۰ پردازش با بیشترین مصرف CPU.
ps و top| ویژگی | ps aux |
top |
|---|---|---|
| نوع خروجی | ایستا (Snapshot) | پویا (Real-time) |
| بهروزرسانی | یکبار (در زمان اجرا) | مداوم (هر چند ثانیه) |
| مناسب برای | تحلیل دقیق، اسکریپتنویسی | مانیتورینگ لحظهای |
| مرتبسازی | با گزینهها (مثل --sort) |
تعاملی (با کلیدها) |
| خروجی قابل پردازش | ✅ بله (مناسب برای grep و ...) |
❌ خیر (خروجی تعاملی) |
ps aux همه پردازشهای سیستم را مشاهده کنید و ستونهای آن را بررسی کنید.ps aux | grep bash پردازشهای مربوط به bash را پیدا کنید.ps -eo pid,comm,%cpu --sort=-%cpu | head -10 ۱۰ پردازش با بیشترین مصرف CPU را ببینید.ps -u $(whoami) پردازشهای خودتان را مشاهده کنید.ps aux و ps -ef را مقایسه کنید.